package com.ruoyi.contract.domain;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 项目对象 project
 *
 * @author ruoyi
 * @date 2024-06-15
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class Cproject extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 项目id
     */
    private Long projectId;

    /**
     * 合同编号
     */
    private String contractCode;

    /**
     * 项目编号
     */
    @Excel(name = "项目编号")
    private String code;

    /**
     * 项目名称
     */
    @Excel(name = "项目名称")
    private String projectName;

    /**
     * 项目负责人id
     */
    @Excel(name = "项目负责人id")
    private Long projectLeaderId;

    private String projectLeader;

    /**
     * 检查时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "检查时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date inspectionTime;

    /**
     * 结题时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结题时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date conpletionTime;

    /**
     * 项目归属
     */
    @Excel(name = "项目归属")
    private String projectOwner;

    /**
     * 项目状态：0--项目录入
     * 1--样品录入
     * 2--实验录入
     * 3--实验中
     * 4--财务结算
     * 5-结题
     */
    @Excel(name = "项目状态")
    private Long projectStyle;

    /**
     * 0没有，1有
     */
    @Excel(name = "0没有，1有")
    private Long haveContract;

    /**
     * 合同名称
     */
    @Excel(name = "合同名称")
    private String contractName;

    /**
     * 签订时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签订时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date signingTime;

    /**
     * 合同签订地址
     */
    @Excel(name = "合同签订地址")
    private String signingLocation;

    /**
     * 履行开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "履行开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /**
     * 履约结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "履约结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date finishDate;

    /**
     * 项目/合同总额
     */
    @Excel(name = "项目/合同总额")
    private Long totalAmount;

    /**
     * 剩余合同份数
     */
    @Excel(name = "剩余合同份数")
    private Long contractNumber;

    /**
     * 是否需要专利
     */
    @Excel(name = "是否需要专利")
    private Long patent;

    private Integer patentAmount;

    /**
     * 专利要求
     */
    @Excel(name = "专利要求")
    private String patentRequirement;

    /**
     * 是否需要文章
     */
    @Excel(name = "是否需要文章")
    private Long article;

    private Integer articleAmount;

    /**
     * 文章要求
     */
    @Excel(name = "文章要求")
    private String articleRequirement;

    /**
     * 是否提交给科研办
     */
    @Excel(name = "是否提交给科研办")
    private Long scientificOffice;

    /**
     * 甲方地址
     */
    @Excel(name = "甲方地址")
    private String aLocation;

    /**
     * 甲方邮箱
     */
    @Excel(name = "甲方邮箱")
    private String aEmail;

    /**
     * 乙方
     */
    @Excel(name = "乙方")
    private String partB;

    /**
     * 乙方法定人代表
     */
    @Excel(name = "乙方法定人代表")
    private String bLegal;

    /**
     * 乙方电话
     */
    @Excel(name = "乙方电话")
    private String bPhone;

    /**
     * 乙方地址
     */
    @Excel(name = "乙方地址")
    private String bLocation;

    /**
     * 乙方邮箱
     */
    @Excel(name = "乙方邮箱")
    private String bEmail;

    /**
     * 收款人账户名称
     */
    @Excel(name = "收款人账户名称")
    private String payeeAccount;

    /**
     * 开户银行
     */
    @Excel(name = "开户银行")
    private String openingBank;

    /**
     * 银行账户
     */
    @Excel(name = "银行账户")
    private String bankAccount;

    /**
     * 合同文件
     */
    @Excel(name = "合同文件")
    private String contractDocuments;

    /**
     * 补充文件
     */
    @Excel(name = "补充文件")
    private String supplementaryDocuments;

    /**
     * 提交给科研办时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "提交给科研办时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date scientificOfficeDate;

    /**
     * 是否提交给院办
     */
    @Excel(name = "是否提交给院办")
    private Long instituteOffice;

    /**
     * 是否需要备案
     */
    @Excel(name = "是否需要备案")
    private Long record;

    /**
     * 合同主要内容
     */
    @Excel(name = "合同主要内容")
    private String contractContent;

    /**
     * 甲方
     */
    @Excel(name = "甲方")
    private String partA;

    /**
     * 甲方法定人代表
     */
    @Excel(name = "甲方法定人代表")
    private String aLegal;

    /**
     * 甲方电话
     */
    @Excel(name = "甲方电话")
    private String aPhone;

    /**
     * 提交给院办时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "提交给院办时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date instituteOfficeDate;

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("projectId", getProjectId())
                .append("contractCode", getContractCode())
                .append("code", getCode())
                .append("projectName", getProjectName())
                .append("projectLeaderId", getProjectLeaderId())
                .append("inspectionTime", getInspectionTime())
                .append("conpletionTime", getConpletionTime())
                .append("projectOwner", getProjectOwner())
                .append("projectStyle", getProjectStyle())
                .append("haveContract", getHaveContract())
                .append("contractName", getContractName())
                .append("signingTime", getSigningTime())
                .append("signingLocation", getSigningLocation())
                .append("startDate", getStartDate())
                .append("finishDate", getFinishDate())
                .append("totalAmount", getTotalAmount())
                .append("contractNumber", getContractNumber())
                .append("patent", getPatent())
                .append("patentRequirement", getPatentRequirement())
                .append("article", getArticle())
                .append("articleRequirement", getArticleRequirement())
                .append("scientificOffice", getScientificOffice())
                .append("aLocation", getALocation())
                .append("aEmail", getAEmail())
                .append("partB", getPartB())
                .append("bLegal", getBLegal())
                .append("bPhone", getBPhone())
                .append("bLocation", getBLocation())
                .append("bEmail", getBEmail())
                .append("payeeAccount", getPayeeAccount())
                .append("openingBank", getOpeningBank())
                .append("bankAccount", getBankAccount())
                .append("contractDocuments", getContractDocuments())
                .append("supplementaryDocuments", getSupplementaryDocuments())
                .append("scientificOfficeDate", getScientificOfficeDate())
                .append("instituteOffice", getInstituteOffice())
                .append("record", getRecord())
                .append("contractContent", getContractContent())
                .append("partA", getPartA())
                .append("aLegal", getALegal())
                .append("aPhone", getAPhone())
                .append("instituteOfficeDate", getInstituteOfficeDate())
                .toString();
    }
}

